﻿#pragma execution_character_set("utf-8")

#include "frmlightbutton.h"
#include "ui_frmlightbutton.h"
#include "qdatetime.h"
#include "qtimer.h"

#include <QDebug>

frmLightButton::frmLightButton(QWidget *parent) : QWidget(parent), ui(new Ui::frmLightButton)
{
    ui->setupUi(this);
    this->initForm();

    ui->lightButton1->setCanMove(true);
}

frmLightButton::~frmLightButton()
{
    delete ui;
}

void frmLightButton::initForm()
{
    //设置背景颜色 为什么初始化时要设置颜色，为什么只有btn2和btn3设置了，1没有设置呢？
    ui->lightButton2->setBgColor(QColor(255, 107, 107));
    ui->lightButton3->setBgColor(QColor(24, 189, 155));

    type = ONE_TOW_THREE;

    //创建一个定时器，定时1秒钟，时间到时会触发对应的更新.
    QTimer *timer = new QTimer(this);
    timer->setInterval(1000);
    connect(timer, SIGNAL(timeout()), this, SLOT(updateValue()));
    timer->start(); //定时器启动
    updateValue();

    //以下方法启动报警
    //ui->lightButton1->setAlarmColor(QColor(255, 0, 0));
    //ui->lightButton1->setNormalColor(QColor(0, 0, 0));
    //ui->lightButton1->startAlarm();

    //ui->lightButton1->setText("Hello World");

//    ui->lightButton1->setShowRect(true);
//    ui->lightButton1->setShowOverlay(true);
//    ui->lightButton1->setOverlayColor(Qt::black);

    ui->lightButton1->setShowOverlay(false);
}

//不同的类型，三种按钮的颜色会发生不同的变化
//这个地方可以优化一下，三种颜色，三个控件
void frmLightButton::updateValue()
{
    if (type == ONE_TOW_THREE) { // 1 2 3
        ui->lightButton1->setLightGreen();
        ui->lightButton2->setLightRed();
        ui->lightButton3->setLightBlue();
        type = THREE_ONE_TOW;
    } else if (type == THREE_ONE_TOW) { // 3 1 2
        ui->lightButton1->setLightBlue();
        ui->lightButton2->setLightGreen();
        ui->lightButton3->setLightRed();
        type = TOW_THREE_ONE;
    } else if (type == TOW_THREE_ONE) {//2 3 1
        ui->lightButton1->setLightRed();
        ui->lightButton2->setLightBlue();
        ui->lightButton3->setLightGreen();
        type = ONE_TOW_THREE;
    }

    update();

    /*使用事件循环的定时，存在误差，这个误差应该和当前队列中的事件数量有关*/
//    QEventLoop eventloop;
//    QTimer::singleShot(1000, &eventloop, SLOT(quit()));
//    eventloop.exec();
//    qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") ;

}
